Flash non-volatile storage devices are commonly used in computers as high-speed solid state storage devices. These devices require flash memory controllers that typically work as random write/random read, small data block devices. Their data block size is typically 8-16 KB. Since these devices provide random write/random read data traffic, performance requirements limit the amount of error correction and data protection that may be used without reducing performance.
Further, these flash controllers require a small block flash translation layer (FTL) which is a mapping of host based small blocks into pages within the flash memory device. Flash translation layers are typically complex and create additional processes for the flash controller to manage such as garbage collection, management of a very large translation table, wear leveling, power fail recovery, and the like. Because of these requirements, flash translation layers are expensive in terms of area and power within the flash controller, and also reduce performance and increase wear.